package utils

import "gitee.com/yanwc/net/bcd"

type (
	BCD8421 string // 压缩bcd 8421码
)

func (v BCD8421) Bytes() (out []byte, err error) {
	enc := bcd.NewEncoder(bcd.Standard)
	src := []byte(v)
	dst := make([]byte, bcd.EncodedLen(len(src)))
	_, err = enc.Encode(dst, src)
	if err != nil {
		return
	}

	return dst, nil
}

func NewBCD(data []byte) (BCD8421, error) {
	dec := bcd.NewDecoder(bcd.Standard)
	strData := make([]byte, len(data)*2)
	l, err := dec.Decode(strData, data)
	if err != nil {
		return "", err
	}

	return BCD8421(strData[:l]), nil
}
